Amazon Q Developer의 새로운 기능인 console to code에 대해

Amazon Q Developer의 새로운 기능인 console to code에 대해

24년 10월에 공개된 Amazon Q Developer의 새로운 기능인 console-to-code 에 대하여 알아봅니다.
Clock Icon2024.10.23

안녕하세요 클래스메소드의 수재입니다.
올해 10월 10일에 Amazon Q Developer의 기능인 console-to-code가 공개되었습니다.

Amazon Q와 이번에 발표된 console to code가 어떤 기능인지 간단히 알아보겠습니다.

Amazon Q

Amazon Q
소프트웨어 개발을 가속화하고 기업의 내부 데이터 활용 능력이 가장 뛰어난 생성형 AI 기반 도우미

2023년에 공개된 AWS의 인공 지능 기반 어시스턴트 서비스입니다. 흔히 말하는 챗봇서비스라고 이해하면 될 것 같습니다.
자연어 프롬프트를 이용하여 자료의 변환 및 요약, AWS 서비스의 제어, 애플리케이션 코딩 및 테스트 등 여러 분야의 작업에 활용할 수 있습니다.
또한 기업 내 문서를 데이터소스로 사용하여 기업 만의 프라이빗한 AI 어시스턴트로 이용할 수 있으며 이를 통해 효율적으로 생산성을 높이는 것도 가능합니다.

Amazon Q Business 와 Amazon Q Developer가 있으며 일반적으로 Amazon Q만 얘기한다면 Business 쪽을 이야기하는 경우가 많습니다.

AWS 콘솔, CLI, API, SDK 등을 통하여 Amazon Q를 이용할 수 있습니다.

사용자 구독은 Amazon Q Business Lite 와 Business Pro 플랜이 있으며 플랜 별로 사용할 수 있는 기능에 차이가 있습니다.
요금과 기능 차이에 대한 상세한 내용은 다음 문서를 참고해주세요.
https://aws.amazon.com/ko/q/business/pricing/

사용 금액은 구독 및 인덱스 용량에 따라 비용이 발생합니다.

Amazon Q Business에 대해서는 아래 영상을 참고하시는 편이 쉽게 이해가 될 것이라 생각합니다.
https://www.youtube.com/watch?v=uG2bPmbLyF0

Amazon Q Developer

Amazon Q Developer는 AWS 애플리케이션을 이해하고, 구축하고, 확장하고, 운영하는 데 도움을 줄 수 있는 생성형 인공지능(AI) 기반 대화형 도우미입니다. AWS 아키텍처, AWS 리소스, 모범 사례, 설명서, 지원 등에 대해 질문할 수 있습니다.

이름 그대로 개발자를 위한 Amazon Q 입니다.
Business가 조직의 생산성 상승에 초점이 맞추어져 있다면 Developer는 애플리케이션의 효율적 운영에 초점이 맞추어져있습니다.

자연어를 사용하여 AWS에 대한 질문이나 코드에 대한 질문, 리소스의 탐색, 문제 해결에 대한 어드바이스 등 여러 분야에 대해 질문할 수 있습니다.
특히 사내 코드와 문서를 RAG 방식으로 활용하기 때문에 사내 거버넌스 등을 지키는 코드를 생성할 수 있도록 돕는 기능(Developer Customazation)도 있습니다.

Business와 마찬가지로 콘솔, IDE, CLI, SDK 등 여러 방법을 통하여 사용할 수 있습니다.

Amazon Q Developer의 사용 예시는 공식 문서에 소개되어 있습니다.
https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/features.html

Business와는 다르게 티어에 따라 비용이 발생합니다.
24년 10월 기준 무료로 이용할 수 있는 프리티어와 사용자당 월 19 USD가 발생하는 Developer Pro 티어가 있습니다.
비용과 기능차이에 대해서는 다음 페이지를 참고해주세요.
https://aws.amazon.com/ko/q/developer/pricing/

Developer에 대해 도움이 되는 영상이 있으니 참고하시는 것을 추천합니다.
https://www.youtube.com/watch?v=TXUYqREOGZ8

console to code

서두에 설명했듯 최근에 공개한 Q Developer의 새로운 기능입니다.
이름 그대로 콘솔 작업을 기록한 다음 생성형 AI를 사용하여 이를 코드로 변환해주는 기능입니다.

24년 10월 기준 생성 가능한 코드 형식은 다음과 같습니다.

  • CDK Java
  • CDK Python
  • CDK TypeScript
  • CloudFormation JSON
  • CloudFormation YAML

모든 서비스를 대상으로 사용할 수 있는 것은 아니며 글 작성 기준 EC2, VPC, RDS 의 조작에 관해서만 사용이 가능합니다.

유저에게 필요한 권한은 코드를 작성하기 위한 q:GenerateCodeFromCommands 액션의 허용이 필요합니다.

기능 자체(작업의 기록과 코드화)의 비용은 발생하지 않습니다.
또한 Devloper의 티어에 따른 기능 제한도 없습니다.

사용해보기

사용은 간단합니다.
예시로 EC2 콘솔에서 EC2 인스턴스 1대를 작성해보겠습니다.

  1. 콘솔에 접속 후 우측 사이드바에서 기록을 시작합니다.
    11
  2. 콘솔에서 인스턴스 생성 작업을 진행합니다.
  3. 작업 완료 후 녹화를 중지합니다. 어느 작업을 대상으로 코드화 할 것인지 체크 한 후에 필요에 따라 CFN 템플릿이나 CLI 등으로 내용을 저장합니다.
    • write 유형만 목록에 나와 있는 경우가 있습니다. 전체 목록을 확인하고 싶은 경우에는 쓰기 에서 모든 유형으로 변경합니다.
      33
  4. 이미지에는 생략되어 있지만 Generate CFN YAML 등을 클릭하여 다른 확장자로 변경하더라도 처음에는 CLI 코드만 제공합니다. CLI 아래에 표시되는 Amazon Q의 Generate를 허용하면 이 CLI 명령을 베이스로 YAML 파일을 작성해줍니다.
    • 다운로드 한 YAML등의 파일의 가장 아래에 Reasoning이라는 구문이 기재되어 있으니 지운 후 사용해야합니다.
      55
      위에는 CLI만 표시되지만
      66
      아래 쪽의 Generate 를 허용하면 변환된 코드를 확인할 수 있습니다

CLI 명령어는 그대로 복사해서 실행해도 문제가 없었습니다.

하지만 YAML 등으로 변환된 파일을 바로 실행해보면 오류가 발생합니다.
보통 CloudFromation에서 제공하지 않는 파라미터가 템플릿에 기재되어 있는 경우가 많았습니다.

추론해보자면 아마 CLI를 YAML로 변환하는 과정에서 CFn이 지원하지 않는 파라미터도 있는 것으로 취급하여 변환하는 것이 원인으로 보입니다.
따라서 CFn에 지식이 아예 없는 분이시라면 Amazon Q Develop에 다운로드 받은 YAML에서 CloudFromation이 지원하지 않는 파라미터는 없는지 한번 더 확인한 후에 템플릿으로 리소스를 작성하는 것을 테스트해보길 바랍니다.[1]

예시에서는 EC2를 작성하는 것만 나와있지만 EC2 콘솔에서 하는 모든 작업이 기록되므로 ELB, SG 등 콘솔에서 가능한 모든 종류의 리소스 작성을 코드화 하는 것이 가능합니다.

마무리

이상으로 Amazon Q Developer에 추가된 기능인 console-to-code 에 대해 알아보았습니다.
코드 작성 방법을 모르더라도 기존 환경을 코드화해주는 CloudFromation 의 IaC Generator나 이번 console to code 기능을 활용하면 환경의 코드화를 도입하는 것이 점점 쉬워질 것이라 생각됩니다.
그리고 코드의 관리 방법에 대해서는 Amazon Q Developer를 이용하여 어드바이스를 받을 수 있게 되었으니 점점 IaC와 CI/CD에 대한 허들이 점점 낮아지는 것 같다고 생각됩니다.

다만 변환이 아직 완벽하지 않다는 점 등은 빨리 개선되었으면 좋겠습니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 must01940 지메일로 보내주시면 감사합니다.

脚注
  1. cloudformation validate-template은 템플릿의 구문만 점검하도록 설계되어 있기 때문에 지원하지 않는 파라미터 등은 확인할 수 없습니다. 따라서 파라미터 하나하나 문서에서 확인하거나 생성된 템플릿을 바로 실행해보고 에러 메시지를 참고하여 필요없는 파라미터를 삭제하는 식으로 대응이 필요하다고 생각됩니다. ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.